import cflw代码库py.cflw网络连接 as 连接
import enum
#===============================================================================
# 工厂
#===============================================================================
class E型号(enum.IntEnum):
	c交换机 = 0x10000000
	c路由器 = 0x20000000
	c盒式 = 0x01000000
	c框式 = 0x02000000
	c七 = 0x04000000	#新型号出厂时的最低系统版本是v7
	s2126 = c交换机 + c盒式 + 2126
	s3100 = c交换机 + c盒式 + 3100
	s3100v2 = c交换机 + c盒式 + 3102
	s3100v3 = c交换机 + c盒式 + c七 + 3103
	s3600 = c交换机 + c盒式 + 3600
	s3928 = c交换机 + c盒式 + 3928
	s5100 = c交换机 + c盒式 + 5100
	s5130 = c交换机 + c盒式 + c七 + 5130
	s5500 = c交换机 + c盒式 + 5500
	s5820v2 = c交换机 + c盒式 + c七 + 5822
	s6500 = c交换机 + c框式 + 6500
	s6503 = c交换机 + c框式 + 6503
	s7500 = c交换机 + c框式 + 7500
	s7503 = c交换机 + c框式 + 7503
	s7506 = c交换机 + c框式 + 7506
	msr3600 = c路由器 + c框式 + c七 + 3600
	msr3620 = c路由器 + c框式 + c七 + 3620
	msr3640 = c路由器 + c框式 + c七 + 3640
	sr8800 = c路由器 + c框式 + 8800
	sr8808 = c路由器 + c框式 + 8808
def f创建设备(a连接, a型号 = 0, a版本 = 0):
	if not a版本:
		if a型号 & E型号.c七:
			v版本 = 7
		else:
			v版本 = 5
	else:
		v版本 = a版本
	if a连接.c连接特性 & 连接.E连接特性.e命令行:	#命令行
		from .华三命令行 import 设备 as 设备
		return 设备.C设备(a连接, a型号, a版本)
#===============================================================================
# 信息
#===============================================================================
class C设备主信息:	#display device maininfo
	def __init__(self, a输出):
		self.m输出 = a输出
	def fg型号名(self):
		pass
	def fg序列号(self):
		pass
	def fg生产日期(self):
		pass
	def fg供应商(self):
		pass
#===============================================================================
# 工具
#===============================================================================
class C配置信息:
	def __init__(self, a配置):
		self.m配置 = a配置.replace('\r', '')
	def __str__(self):
		return self.m配置
	def fg设备名称(self):
		return C输出分析.f从配置取设备名称(self.m配置)
class C输出分析:
	def f从配置取设备名称(a配置):
		v指定行 = a配置.find(" sysname ")
		v结束 = a配置.find('\n', v指定行)
		if v结束 == -1:
			return a配置[v指定行 + 9 :]
		else:
			return a配置[v指定行 + 9 : v结束]